package com.yungu.swift.assets.driver.service;

import com.yungu.swift.assets.driver.model.dto.CarModelDto;
import com.yungu.swift.assets.driver.model.param.AdminCarModelSortParam;
import com.yungu.swift.assets.driver.model.param.CarModelSiteParam;
import com.yungu.swift.assets.driver.model.param.CarModelWayParam;
import com.yungu.swift.base.ResponseData;
import com.yungu.swift.base.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * Copyright © 厦门云谷互联信息有限公司 2018-2020 All Right Reserved
 * <p>
 * 车型业务逻辑接口
 * <p>
 *
 * @author cuixiuyin - Generate
 * @version 1.1.1-SNAPSHOT
 * @since 2018-07-02 11:19
 */
public interface CarModelService extends BaseService<CarModelDto> {

    /**
     * 设置默认的车型，同类型的要设置为非默认，传入的uuid设置为默认
     *
     * @param type 参数
     * @param uuid 参数
     * @return AjaxList
     */
    ResponseData<Boolean> setDefault(Integer type, String uuid);

    /**
     * 保存车型
     *
     * @param carModelDto 参数
     * @param userUuid    参数
     * @return AjaxList
     */
    ResponseData<Boolean> saveOrUpdate(CarModelDto carModelDto, String userUuid);

    /**
     * 修改计价规则排序
     *
     * @param carModelSortParam 参数
     * @return AjaxList
     */
    ResponseData<Boolean> updateSort(AdminCarModelSortParam carModelSortParam);

    /**
     * 根据主键uuid删除对应的车型数据和计价规则
     *
     * @param uuid 参数
     * @return AjaxList
     */
    ResponseData<Boolean> delete(String uuid);

    /**
     * 获取最大座位数
     *
     * @return
     */
    ResponseData<Integer> getMaxSeats(Map<String, Object> params);

    /**
     * 根据路线获取车型
     *
     * @param carModelWayParam
     * @return
     */
    ResponseData<List<CarModelDto>> listCarModelByWay(CarModelWayParam carModelWayParam);

    /**
     * 根据起终点获取车型
     *
     * @param siteParam
     * @return
     */
    ResponseData<List<CarModelDto>> listCarModelByPointSite(CarModelSiteParam siteParam);
}